<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>深入理解 Netty ByteBuf：高性能网络通信的核心</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            min-height: 100vh;
        }
        
        /* Hero 区域样式 */
        .hero-gradient {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            position: relative;
            overflow: hidden;
        }
        
        .hero-gradient::before {
            content: '';
            position: absolute;
            top: -50%;
            right: -50%;
            width: 200%;
            height: 200%;
            background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
            animation: pulse 15s ease-in-out infinite;
        }
        
        @keyframes pulse {
            0%, 100% { transform: scale(1) rotate(0deg); }
            50% { transform: scale(1.1) rotate(180deg); }
        }
        
        /* 卡片悬停效果 */
        .feature-card {
            transition: all 0.3s ease;
            background: rgba(255, 255, 255, 0.95);
            backdrop-filter: blur(10px);
        }
        
        .feature-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
        }
        
        /* 代码块样式 */
        .code-block {
            background: #1e1e1e;
            color: #d4d4d4;
            border-radius: 12px;
            padding: 1.5rem;
            overflow-x: auto;
            position: relative;
            font-family: 'Consolas', 'Monaco', monospace;
        }
        
        .code-block::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 40px;
            background: #2d2d2d;
            border-radius: 12px 12px 0 0;
        }
        
        .code-block::after {
            content: '• • •';
            position: absolute;
            top: 12px;
            left: 20px;
            color: #666;
            font-size: 20px;
            letter-spacing: 5px;
        }
        
        .code-content {
            margin-top: 20px;
        }
        
        /* 首字下沉 */
        .drop-cap::first-letter {
            float: left;
            font-size: 4rem;
            line-height: 3rem;
            padding-right: 0.5rem;
            margin-top: 0.5rem;
            font-weight: 700;
            color: #667eea;
        }
        
        /* 引用样式 */
        .quote-box {
            position: relative;
            padding-left: 3rem;
            border-left: 4px solid #667eea;
        }
        
        .quote-box::before {
            content: '\f10d';
            font-family: 'Font Awesome 6 Free';
            font-weight: 900;
            position: absolute;
            left: 1rem;
            top: 0;
            font-size: 2rem;
            color: #667eea;
            opacity: 0.3;
        }
        
        /* 数字标记 */
        .number-badge {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 2.5rem;
            height: 2.5rem;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-radius: 50%;
            font-weight: 700;
            margin-right: 1rem;
        }
        
        /* 渐变文字 */
        .gradient-text {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }
        
        /* 平滑滚动 */
        html {
            scroll-behavior: smooth;
        }
        
        /* Mermaid 图表样式 */
        .mermaid {
            display: flex;
            justify-content: center;
            margin: 2rem 0;
        }
    </style>
</head>
<body>
    <!-- Hero 区域 -->
    <section class="hero-gradient text-white py-20 px-6 relative">
        <div class="max-w-6xl mx-auto relative z-10">
            <div class="text-center">
                <h1 class="text-5xl md:text-6xl font-bold mb-6 animate-fade-in">
                    深入理解 Netty <span class="text-yellow-300">ByteBuf</span>
                </h1>
                <p class="text-xl md:text-2xl mb-8 opacity-90">
                    高性能网络通信的核心组件
                </p>
                <div class="flex justify-center space-x-6 text-lg">
                    <div class="flex items-center">
                        <i class="fas fa-rocket mr-2"></i>
                        <span>高性能</span>
                    </div>
                    <div class="flex items-center">
                        <i class="fas fa-memory mr-2"></i>
                        <span>智能内存管理</span>
                    </div>
                    <div class="flex items-center">
                        <i class="fas fa-expand-arrows-alt mr-2"></i>
                        <span>动态扩展</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- 主要内容区域 -->
    <main class="max-w-6xl mx-auto px-6 py-12">
        
        <!-- 引言部分 -->
        <section class="bg-white rounded-2xl shadow-xl p-8 mb-12">
            <p class="text-lg leading-relaxed text-gray-700 drop-cap">
                Netty作为一个高性能的网络通信框架，其设计上考虑了高效、灵活、可扩展的特点，而在数据传输和内存管理方面，<strong class="text-purple-600">ByteBuf</strong>无疑是Netty的核心组成部分之一。ByteBuf不仅是Netty中数据操作的基础，而且它在内存管理、数据缓冲、性能优化等方面发挥着至关重要的作用。
            </p>
        </section>

        <!-- 什么是ByteBuf -->
        <section class="mb-12">
            <h2 class="text-3xl font-bold mb-6 gradient-text">什么是ByteBuf？</h2>
            <div class="bg-white rounded-2xl shadow-xl p-8">
                <p class="text-lg leading-relaxed text-gray-700 mb-6">
                    在Netty中，<strong class="text-purple-600">ByteBuf</strong>是用于存储字节数据的容器，它类似于Java中的<code class="bg-gray-100 px-2 py-1 rounded text-red-600">byte[]</code>数组，但相比之下，ByteBuf具有更加灵活和高效的内存管理方式。ByteBuf能够在读取和写入操作之间自动管理内存，支持动态扩展，同时还具有比传统的字节数组更加高效的内存分配和访问方式。
                </p>
                
                <!-- 关键特点卡片 -->
                <h3 class="text-2xl font-semibold mb-6 text-gray-800">ByteBuf的关键特点</h3>
                <div class="grid md:grid-cols-3 gap-6">
                    <div class="feature-card p-6 rounded-xl border border-gray-200">
                        <div class="flex items-center mb-4">
                            <span class="number-badge">1</span>
                            <h4 class="text-xl font-semibold">灵活的内存管理</h4>
                        </div>
                        <p class="text-gray-600">
                            ByteBuf支持直接缓冲区（Direct Buffer）和堆缓冲区（Heap Buffer）。直接缓冲区能够提高I/O操作的效率，避免数据在堆内存和操作系统缓冲区之间的拷贝。
                        </p>
                    </div>
                    
                    <div class="feature-card p-6 rounded-xl border border-gray-200">
                        <div class="flex items-center mb-4">
                            <span class="number-badge">2</span>
                            <h4 class="text-xl font-semibold">读写分离</h4>
                        </div>
                        <p class="text-gray-600">
                            ByteBuf具有读指针（readerIndex）和写指针（writerIndex），可以实现数据的读写分离，这对于并发和高性能的网络通信非常重要。
                        </p>
                    </div>
                    
                    <div class="feature-card p-6 rounded-xl border border-gray-200">
                        <div class="flex items-center mb-4">
                            <span class="number-badge">3</span>
                            <h4 class="text-xl font-semibold">动态扩展</h4>
                        </div>
                        <p class="text-gray-600">
                            ByteBuf支持动态扩展，不需要你显式地管理内存的分配和回收。它会根据需要自动扩展或收缩缓冲区。
                        </p>
                    </div>
                </div>
                
                <!-- 为什么使用ByteBuf -->
                <div class="mt-8 quote-box">
                    <h3 class="text-2xl font-semibold mb-4 text-gray-800">为什么使用ByteBuf？</h3>
                    <p class="text-lg text-gray-700">
                        传统的<code class="bg-gray-100 px-2 py-1 rounded text-red-600">byte[]</code>数组在I/O操作中存在一些问题，比如不灵活、内存管理繁琐、扩展性差等。而ByteBuf通过高效的内存管理机制，解决了这些问题，使得Netty能够在高并发、高性能的场景中保持良好的效率。
                    </p>
                </div>
            </div>
        </section>

        <!-- ByteBuf架构图 -->
        <section class="mb-12">
            <div class="bg-white rounded-2xl shadow-xl p-8">
                <h3 class="text-2xl font-semibold mb-6 text-center gradient-text">ByteBuf 架构概览</h3>
                <div class="mermaid">
                    graph TB
                        A[ByteBuf] --> B[堆缓冲区<br/>Heap Buffer]
                        A --> C[直接缓冲区<br/>Direct Buffer]
                        A --> D[复合缓冲区<br/>Composite Buffer]
                        
                        B --> E[存储在JVM堆内存]
                        C --> F[存储在操作系统内存]
                        D --> G[多个缓冲区的逻辑视图]
                        
                        A --> H[读写指针机制]
                        H --> I[readerIndex]
                        H --> J[writerIndex]
                        
                        A --> K[内存池管理]
                        K --> L[PooledByteBufAllocator]
                        K --> M[UnpooledByteBufAllocator]
                        
                        style A fill:#667eea,stroke:#fff,stroke-width:3px,color:#fff
                        style B fill:#fbbf24,stroke:#fff,stroke-width:2px
                        style C fill:#34d399,stroke:#fff,stroke-width:2px
                        style D fill:#f87171,stroke:#fff,stroke-width:2px
                </div>
            </div>
        </section>

        <!-- ByteBuf的基础操作 -->
        <section class="mb-12">
            <h2 class="text-3xl font-bold mb-6 gradient-text">ByteBuf的基础操作</h2>
            <div class="bg-white rounded-2xl shadow-xl p-8">
                <p class="text-lg leading-relaxed text-gray-700 mb-8">
                    ByteBuf的操作主要围绕以下几个方面展开：读、写、索引、内存管理等。下面将通过简单的代码示例，来了解ByteBuf的基本操作。
                </p>
                
                <!-- 操作示例网格 -->
                <div class="space-y-8">
                    <!-- 创建ByteBuf -->
                    <div>
                        <h3 class="text-xl font-semibold mb-4 flex items-center">
                            <i class="fas fa-plus-circle text-purple-600 mr-3"></i>
                            创建ByteBuf
                        </h3>
                        <p class="text-gray-700 mb-4">
                            Netty提供了多种方式来创建ByteBuf，最常见的方式是通过<code class="bg-gray-100 px-2 py-1 rounded text-red-600">Unpooled</code>类来创建堆缓冲区（Heap ByteBuf）和直接缓冲区（Direct ByteBuf）。
                        </p>
                        <div class="code-block">
                            <pre class="code-content"><code>// 创建堆缓冲